|
Standard ML (SML) は、プログラミング言語MLの標準ないし1方言である。''The Definition of Standard ML'' で型付け規則と操作的意味論が与えられている。1990年に初版が出版され、1997年に単純化された改版が出版されている。 == 概要 == Standard ML は基本的には関数型言語である。Standard ML で書かれたプログラムの大部分は、値を計算すべき式で構成されている。 他の関数型言語と同様、Standard ML の鍵となる機能は関数であり、それによって抽象化を行っている。例えば、階乗関数は次のように表される。 fun factorial x = if x = 0 then 1 else x * factorial (x-1) Standard ML のコンパイラは、このようにユーザーが全くデータ型を指定していない記述から int -> int という型を静的に推論する必要がある。すなわち、''x'' が整数の式でしか使われていないことから、それ自身も整数だと推論し、関数内の式で生み出される値も全て整数であると推論しなければならない。 同じ関数を「節関数定義 (clausal function definition)」で表現することもできる。その場合 ''if''-''then''-''else'' という条件分岐を '|' で区切られた一連のテンプレートに置換し、個々のテンプレートは特定の値について評価される。各テンプレートは順番に試行され、一致するものを見つけることになる。 fun factorial 0 = 1 | factorial n = n * factorial (n - 1) 局所関数を使い、この関数を末尾再帰に書き換えることもできる。 fun factorial x = let fun tail_fact p 0 = p | tail_fact p n = tail_fact (p * n) (n - 1) in tail_fact 1 x end let-式の値は、in と end に挟まれた式の値になる。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「Standard ML」の詳細全文を読む スポンサード リンク
|